package com.ftg.learn.lesson5;

import java.util.Arrays;

/**
 * 学习一个字符串
 *
 * @author kangjx
 * @version 1.0
 * @date 2023/6/27 上午8:11
 */
public class String02 {


    public static void main(String[] args) {
        //StringBuffer 线程 安全的 right 可变字符序列 [Stringbuilder stringbuffer]
        StringBuffer stringBuffer = new StringBuffer("abc");

        //需要线程安全的情况下我们要用  StringBuffer

        //速度 StringBuilder

//        synchronized  线程 同步方法
    }

    public void learnStringBuilder(){

        //软件类公司里面使用哪种?
//        常量  String
//        StringBuilder

        int[] a = {1,2};
        a = Arrays.copyOf(a,5);
        Arrays.fill(a,2,5,34);
        System.out.println(Arrays.toString(a));
//        StringBuilder stringBuilder = new StringBuilder("abc");
//        stringBuilder.setLength(21);
//        System.out.println(stringBuilder);
        //可改自符序列 底层是一个长度为16char的数组
//        StringBuilder stringBuilder = new StringBuilder();
        //可改自符序列底层是一个长度为16+"abc".length()char的数组
//        StringBuilder stringBuilder = new StringBuilder("abc");
//        //扩容 16 存储满了-->
//        stringBuilder.append("a").append("b").append("cjsdljfksdjafjsdkafjklsdjlfsdklfjklsdflsdjfjklsfjklsdjlfjklsjlfjsdklfjklsdfklsdjklfjdklsfklsdhfjkshfksdhfksdkfhdksfhjkdshfsdjkfhksdhfksdfkhsjkfhdjks");
//        System.out.println(stringBuilder.length());
//
//        //char length 153
//        stringBuilder.setLength(2);
//        stringBuilder.delete(0,150);
//        System.out.println(stringBuilder.length());
//
//        //有没有办法可以减少不用的地址空间
//        stringBuilder.trimToSize();
//
//        stringBuilder.reverse();
//
//        stringBuilder.insert(0,"xx");
//        stringBuilder.setCharAt(0,'y');
//        System.out.println(stringBuilder);
        //16
//        StringBuilder stringBuilder = new StringBuilder();
//        stringBuilder.append("2314");
//        16 32+2 34 36

    }
    public void learnString(){
        //"abc" 字符串常量 常量池里面了 ..为了提高字符串占用的地址比。常量池里面不能存储相同的两个値
        String str1 = "abc";
        String str2 = "abc";

        //new String() 存储堆中   [a,b,c]
        String str3 = new String("abc");
        String str4 = new String("abc");

        String str6 = "ab";

        //jdk1.7 以后优化了
//        new StringBuilder(str6).append("c").toString();
        String str7 = str6 + "c";

        String str5 = "a" + "b" + "c";

        // == 在非基础类型 引用类型 判断的是是否为同一内存地址
        System.out.println(str1 == str2);
        System.out.println(str3 == str4);

        System.out.println(str1 == str5);

        System.out.println(str7 == str5);

        //equals 値是否相等
        System.out.println(str7.equals(str5));
    }

}

